package m1;

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Consumer {
    public static void main(String[] args) throws IOException, TimeoutException {
        // 连接
        ConnectionFactory f = new ConnectionFactory();
        f.setHost("192.168.64.140");  // wht6.cn
        f.setPort(5672); // 5672是客户端收发消息的端口，15672是管理控制台的访问端口
        f.setUsername("admin");
        f.setPassword("admin");
        Connection con = f.newConnection();
        Channel c = con.createChannel(); // 通信的通道

        // 在服务器上创建队列 helloworld，如果已经存在不会重复创建
        c.queueDeclare("helloworld",false,false,false,null);

        // 创建回调对象  ctrl+空格 代码辅助快捷键，修改成了 alt+/
        // 参考 csdn 笔记，开发工具专栏，idea快捷键笔记
        DeliverCallback deliverCallback = (consumerTag, message) -> {
            byte[] a = message.getBody();
            String s = new String(a);
            System.out.println("收到： "+s);
        };
        CancelCallback cancelCallback = consumerTag -> {};

        // 从 helloworld 接收消息，传递到回调对象处理
        /*
        第二个参数 true：
            autoAck - 自动确认 auto Acknowledgement
         */
        c.basicConsume("helloworld", true, deliverCallback, cancelCallback);
    }
}